import { BasicColumn } from '/@/components/Table';
import { FormSchema } from '/@/components/Table';
import { rules } from '/@/utils/helper/validator';
import { render } from '/@/utils/common/renderUtils';
import { getWeekMonthQuarterYear } from '/@/utils';
import { productTypeList } from '@/views/product/Product.api';
//列表数据
export const columns: BasicColumn[] = [
  {
    title: '名称',
    align: 'center',
    dataIndex: 'name',
  },
  {
    title: '价格',
    align: 'center',
    dataIndex: 'price',
  },
  // {
  //   title: '优惠后价格',
  //   align: 'center',
  //   dataIndex: 'discountPrice',
  // },
  {
    title: '分类',
    align: 'center',
    dataIndex: 'typeId_dictText',
  },
  // {
  //   title: '规格',
  //   align: 'center',
  //   dataIndex: 'specification',
  // },
  // {
  //   title: '数量',
  //   align: 'center',
  //   dataIndex: 'weight',
  // },
  // {
  //   title: '品牌',
  //   align: 'center',
  //   dataIndex: 'brand',
  // },
  {
    title: '图片',
    align: 'center',
    dataIndex: 'img',
    customRender: render.renderImage,
  },
  // {
  //   title: '详情多图',
  //   align: 'center',
  //   dataIndex: 'imgInfo',
  //   customRender: render.renderImage,
  // },
  // {
  //   title: '产品描述',
  //   align: 'center',
  //   dataIndex: 'description',
  // },
  {
    title: '销量',
    align: 'center',
    dataIndex: 'salesVolume',
  },
  {
    title: '返积分',
    align: 'center',
    dataIndex: 'points',
  },
  // {
  //   title: '所需积分',
  //   align: 'center',
  //   dataIndex: 'pointsRequired',
  // },
  // {
  //   title: '库存数量',
  //   align: 'center',
  //   dataIndex: 'stock',
  // },
  // {
  //   title: '星级',
  //   align: 'center',
  //   dataIndex: 'star',
  // },
  {
    title: '联系电话',
    align: 'center',
    dataIndex: 'phone',
  },
  // {
  //   title: '所需人数',
  //   align: 'center',
  //   dataIndex: 'requiredPeople',
  // },
  // {
  //   title: '最大人数',
  //   align: 'center',
  //   dataIndex: 'maxPeople',
  // },
  // {
  //   title: '当前报名人数',
  //   align: 'center',
  //   dataIndex: 'currentPeople',
  // },
  // {
  //   title: '行程安排',
  //   align: 'center',
  //   dataIndex: 'routeDetail',
  // },
  // {
  //   title: '注意事项',
  //   align: 'center',
  //   dataIndex: 'notice',
  // },
  // {
  //   title: '所属社区店',
  //   align: 'center',
  //   dataIndex: 'orgId',
  // },
  // {
  //   title: '是否是视频',
  //   align: 'center',
  //   dataIndex: 'isVideo',
  // },
  // {
  //   title: '视频列表',
  //   align: 'center',
  //   dataIndex: 'videoList',
  // },
  {
    title: '状态',
    align: 'center',
    dataIndex: 'status',
    customRender: ({ record }) => {
      return record.status == 1 ? '上架' : '下架';
    },
  },
];
//查询数据
export const searchFormSchema: FormSchema[] = [
  {
    label: '分类',
    field: 'typeId',
    component: 'ApiSelect',
    componentProps: ({ formModel }) => {
      return {
        api: async () => {
          const { records } = await productTypeList({ header: 2, column: 'sort', order: 'asc' });
          formModel.typeId = records[0].id;
          return records;
        },
        resultField: 'records',
        labelField: 'name',
        valueField: 'id',
      };
    },
  },
  {
    label: '名称',
    field: 'name',
    component: 'JInput',
  },
  {
    label: '上架状态',
    field: 'status',
    component: 'RadioButtonGroup',
    defaultValue: 1,
    componentProps: {
      options: [
        { label: '上架', value: 1 },
        { label: '下架', value: 0 },
      ],
    },
  },
];
//表单数据
export const formSchema: FormSchema[] = [
  {
    label: '名称',
    field: 'name',
    component: 'Input',
  },
  {
    label: '价格',
    field: 'price',
    component: 'InputNumber',
  },
  // {
  //   label: '优惠后价格',
  //   field: 'discountPrice',
  //   component: 'InputNumber',
  // },
  {
    label: '分类',
    field: 'typeId',
    component: 'ApiSelect',
    componentProps: {
      api: productTypeList,
      resultField: 'records',
      labelField: 'name',
      valueField: 'id',
      params: { header: 2, column: 'sort', order: 'asc' },
    },
  },
  {
    label: '品牌',
    field: 'brand',
    component: 'Input',
  },
  {
    label: '图片',
    field: 'img',
    component: 'JImageUpload',
    componentProps: {
      fileMax: 5,
    },
  },
  {
    label: '产品描述',
    field: 'description',
    component: 'InputTextArea',
  },
  {
    label: '详情多图',
    field: 'imgInfo',
    component: 'JImageUpload',
    componentProps: {
      fileMax: 10,
    },
  },
  {
    label: '返积分',
    field: 'points',
    component: 'InputNumber',
  },
  // {
  //   label: '库存数量',
  //   field: 'stock',
  //   component: 'InputNumber',
  // },
  {
    label: '联系电话',
    field: 'phone',
    component: 'Input',
  },
  {
    label: '是否是视频',
    field: 'isVideo',
    component: 'JSwitch',
    defaultValue: '0',
    componentProps: { options: ['1', '0'] },
  },
  {
    label: '视频列表',
    field: 'videoList',
    component: 'JImageUpload',
    show: ({ model }) => {
      return model.isVideo == 1;
    },
    componentProps: {},
  },
  {
    label: '上架状态',
    field: 'status',
    component: 'RadioButtonGroup',
    defaultValue: 1,
    componentProps: {
      options: [
        { label: '上架', value: 1 },
        { label: '下架', value: 0 },
      ],
    },
  },
  // TODO 主键隐藏字段，目前写死为ID
  {
    label: '',
    field: 'id',
    component: 'Input',
    show: false,
  },
];

// 高级查询数据
export const superQuerySchema = {
  status: { title: '状态(1正常 0下架)', order: 0, view: 'number', type: 'number' },
  name: { title: '项目或产品名称', order: 1, view: 'text', type: 'string' },
  price: { title: '原价', order: 2, view: 'number', type: 'number' },
  discountPrice: { title: '优惠后价格', order: 3, view: 'number', type: 'number' },
  typeId: { title: '所关联类型ID', order: 4, view: 'text', type: 'string' },
  specification: { title: '规格', order: 5, view: 'text', type: 'string' },
  weight: { title: '重量', order: 6, view: 'number', type: 'number' },
  brand: { title: '品牌', order: 7, view: 'text', type: 'string' },
  img: { title: '图片', order: 8, view: 'text', type: 'string' },
  imgInfo: { title: '详情多图', order: 9, view: 'textarea', type: 'string' },
  description: { title: '产品描述', order: 10, view: 'textarea', type: 'string' },
  salesVolume: { title: '销量', order: 11, view: 'text', type: 'string' },
  points: { title: '可获得积分', order: 12, view: 'number', type: 'number' },
  pointsRequired: { title: '所需积分', order: 13, view: 'number', type: 'number' },
  stock: { title: '库存数量', order: 14, view: 'number', type: 'number' },
  star: { title: '星级', order: 15, view: 'number', type: 'number' },
  phone: { title: '联系电话', order: 16, view: 'text', type: 'string' },
  requiredPeople: { title: '所需人数', order: 17, view: 'number', type: 'number' },
  maxPeople: { title: '最大人数', order: 18, view: 'number', type: 'number' },
  currentPeople: { title: '当前报名人数', order: 19, view: 'number', type: 'number' },
  routeDetail: { title: '行程安排', order: 20, view: 'textarea', type: 'string' },
  notice: { title: '注意事项', order: 21, view: 'textarea', type: 'string' },
  orgId: { title: '所属社区店', order: 22, view: 'text', type: 'string' },
  isVideo: { title: '是否是视频', order: 23, view: 'number', type: 'number' },
  videoList: { title: '视频列表', order: 24, view: 'textarea', type: 'string' },
};

/**
 * 流程表单调用这个方法获取formSchema
 * @param param
 */
export function getBpmFormSchema(_formData): FormSchema[] {
  // 默认和原始表单保持一致 如果流程中配置了权限数据，这里需要单独处理formSchema
  return formSchema;
}
